/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package nl.hanze.web.banken;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 *
 * @author Herman
 */
@Entity
@Table(name = "ACCOUNT")
@NamedQueries({
    @NamedQuery(name = "DerbyAccount.findAll", query = "SELECT d FROM DerbyAccount d")})
public class DerbyAccount extends Rekening implements Serializable {
    private static final long serialVersionUID = 1L;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "NAAM")
    private String naam;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 255)
    @Column(name = "WOONPLAATS")
    private String woonplaats;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "REKENINGNUMMER")
    private Integer rekeningnummer;
    @Basic(optional = false)
    @NotNull
    @Column(name = "SALDO")
    private int saldo;
    @Basic(optional = false)
    @NotNull
    @Column(name = "LIMIET")
    private int limiet;

    public DerbyAccount() {
    }

    public DerbyAccount(Integer rekeningnummer) {
        this.rekeningnummer = rekeningnummer;
    }

    public DerbyAccount(Integer rekeningnummer, String naam, String woonplaats, int saldo, int limiet) {
        this.rekeningnummer = rekeningnummer;
        this.naam = naam;
        this.woonplaats = woonplaats;
        this.saldo = saldo;
        this.limiet = limiet;
    }

    public String getNaam() {
        return naam;
    }

    public void setNaam(String naam) {
        this.naam = naam;
    }

    public String getWoonplaats() {
        return woonplaats;
    }

    public void setWoonplaats(String woonplaats) {
        this.woonplaats = woonplaats;
    }

    public Integer getRekeningnummer() {
        return rekeningnummer;
    }

    public void setRekeningnummer(Integer rekeningnummer) {
        this.rekeningnummer = rekeningnummer;
    }

    @Override
    public int getSaldo() {
        return saldo;
    }

    public void setSaldo(int saldo) {
        this.saldo = saldo;
    }
    
    @Override
    public void addSaldo(int amount) {
        setSaldo(getSaldo()+amount);
    }
    
    @Override
    public int getLimiet() {
        return limiet;
    }

    public void setLimiet(int limiet) {
        this.limiet = limiet;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (rekeningnummer != null ? rekeningnummer.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof DerbyAccount)) {
            return false;
        }
        DerbyAccount other = (DerbyAccount) object;
        if ((this.rekeningnummer == null && other.rekeningnummer != null) || (this.rekeningnummer != null && !this.rekeningnummer.equals(other.rekeningnummer))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "nl.hanze.web.banken.DerbyAccount[ rekeningnummer=" + rekeningnummer + " ]";
    }
}
